Azure VPN Gateway の Basic SKU がポータルから作成出来なかったので PowerShell で作成してみた
いわさです。
AWS と Azure でサイト間 VPN 接続を構成すること、よくありますよね。
少し古い記事になるのですが、今でも次の記事を参考に同じ流れで Azure と AWS 間のサイト間 VPN を構築することが出来ます。
今回 VPN を構築していて、検証用に長期間環境を保持する必要があり、BGP なども不要だったのでコスト面を鑑みて Azure VPN Gateway の SKU で Basic を選択しようとしました。
しかし Azure ポータルから仮想ネットワークゲートウェイの SKU を選択する際に Basic が選択出来ないことに気が付きました。
Azure VPN Gateway には旧世代と新世代があり、Basic SKU は旧世代でのみ利用可能です。
ポータルから旧世代も選択は出来るのですが、SKU はやはり選択出来ませんでした。
また、料金ページには Basic SKU に関する料金が表示されているので、使えないというわけではなさそうです。
いまはポータルから作成出来ないらしい
公式ドキュメントを調べてみると、次の記述を見つけました。
VPN Gateway Basic SKU も廃止されますか?
いいえ、Basic SKU は廃止されません。 現在は Basic IP (提供終了パスに含まれます) のみがサポートされている Basic SKU に、Standard IP のサポートが間もなく追加されます。 現在は、Powershell または CLI を使って Basic SKU を作成できますが、Standard IP のサポートが追加されると、ポータルでも Basic SKU を作成できるようになります。
あっ、ポータルからは作れないのか!そうなの?
この記述からすると、将来的にはポータルからも作れるようにはなりそうですが。
というわけで今回は PowerShell を使って Azure VPN Gateway などの一部リソースを作成し、AWS との接続を行ってみましたので紹介します。
作成したスクリプト
PowerShell スクリプトを今回作成したのですが、ベースは次のドキュメントを参考にしています。
いくつかリソースを作成する必要があるのですが、リソースグループから VPN Gateway の作成までのコマンドが紹介されています。
上記を基にスクリプトを作成し、あとは Basic SKU に対応させたり、IP アドレスがなぜか静的になっていたので動的に変更したりしています。
CIDR やリソース名、リージョンなどもちょっとだけ変えてます。
# https://learn.microsoft.com/ja-jp/azure/vpn-gateway/create-routebased-vpn-gateway-powershell # 作成済みのリソースグループとリージョン $resourceGroupName = "20240120" $region = "JapanEast" # # リソースグループ作成 New-AzResourceGroup -Name $resourceGroupName -Location $region # 仮想ネットワーク $virtualNetwork = New-AzVirtualNetwork -ResourceGroupName $resourceGroupName -Location $region -Name "hogevnet" -AddressPrefix 10.0.0.0/16 $subnetConfig = Add-AzVirtualNetworkSubnetConfig -Name "hogesubnet" -AddressPrefix 10.0.0.0/24 -VirtualNetwork $virtualNetwork $virtualNetwork | Set-AzVirtualNetwork # # ゲートウェイサブネットの追加 $vnet = Get-AzVirtualNetwork -ResourceGroupName $resourceGroupName -Name "hogevnet" Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 10.0.254.0/24 -VirtualNetwork $vnet $vnet | Set-AzVirtualNetwork # パブリックIPアドレス $gwpip = New-AzPublicIpAddress -Name "hogepublicip" -ResourceGroupName $resourceGroupName -Location $region -AllocationMethod Dynamic -Sku "Basic" # ゲートウェイIPアドレスの構成の作成 $vnet = Get-AzVirtualNetwork -Name "hogevnet" -ResourceGroupName $resourceGroupName $subnet = Get-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -VirtualNetwork $vnet $gwipconfig = New-AzVirtualNetworkGatewayIpConfig -Name "hogegwipconfig" -SubnetId $subnet.Id -PublicIpAddressId $gwpip.Id # VPNゲートウェイ作成 New-AzVirtualNetworkGateway -Name "hogevpngw" -ResourceGroupName $resourceGroupName -Location $region -IpConfigurations $gwipconfig -GatewayType "Vpn" -VpnType "RouteBased" -GatewaySku "Basic" -VpnGatewayGeneration "Generation1" # VPNゲートウェイ表示 Get-AzVirtualNetworkGateway -Name "hogevpngw" -ResourceGroup $resourceGroupName # パブリックIPアドレス表示 Get-AzPublicIpAddress -Name "hogepublicip" -ResourceGroupName $resourceGroupName
構築に使ってみた
上記をスクリプト化して実行しました。
PS /Users/iwasa.takahito> ./hoge.ps1 ResourceGroupName : 20240120 Location : japaneast ProvisioningState : Succeeded Tags : ResourceId : /subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/20240120 : IpConfigurations : {hogegwipconfig} GatewayType : Vpn VpnType : RouteBased EnableBgp : False DisableIPsecProtection : False EnablePrivateIpAddress : False ActiveActive : False GatewayDefaultSite : ProvisioningState : Succeeded Sku : Microsoft.Azure.Commands.Network.Models.PSVirtualNetworkGatewaySku VirtualNetworkGatewayPolicyGroups : {} VpnClientConfiguration : BgpSettings : CustomRoutes : VpnGatewayGeneration : Generation1 ExtendedLocation : VNetExtendedLocationResourceId : NatRules : {} EnableBgpRouteTranslationForNat : False AdminState : AllowRemoteVnetTraffic : False AllowVirtualWanTraffic : False AutoScaleConfiguration : IpConfigurationsText : [ { "PrivateIpAllocationMethod": "Dynamic", "Subnet": { "Id": "/subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/20240120/providers/Microsoft.Network/virtualNetworks/hogevnet/subnets/GatewaySubnet" }, "PublicIpAddress": { "Id": "/subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/20240120/providers/Microsoft.Network/publicIPAddresses/hogepublicip" }, "Name": "hogegwipconfig", "Etag": "W/\"5dbb93d4-bda6-4360-9d25-4bb4d71a2847\"", "Id": "/subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/20240120/providers/Microsoft.Network/virtualNetworkGateways/hogevpngw/ipConfigurations/hogegwipconfig" } ] ExtendedLocationText : null VNetExtendedLocationResourceIdText : null GatewayDefaultSiteText : null SkuText : { "Capacity": 2, "Name": "Basic", "Tier": "Basic" } VpnClientConfigurationText : null BgpSettingsText : null NatRulesText : [] CustomRoutesText : null AutoScaleConfigurationText : null ResourceGroupName : 20240120 Location : japaneast ResourceGuid : a2e60575-9a6a-4fef-902f-d85b8d59ff55 Type : Microsoft.Network/virtualNetworkGateways Tag : TagsTable : Name : hogevpngw Etag : W/"5dbb93d4-bda6-4360-9d25-4bb4d71a2847" Id : /subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/20240120/providers/Microsoft.Network/virtualNetworkGateways/hogevpngw ExtendedLocation : PublicIpAllocationMethod : Dynamic Sku : Microsoft.Azure.Commands.Network.Models.PSPublicIpAddressSku IpConfiguration : Microsoft.Azure.Commands.Network.Models.PSIPConfiguration DnsSettings : DdosSettings : Microsoft.Azure.Commands.Network.Models.PSDdosSettings IpTags : {} IpAddress : 52.253.117.31 PublicIpAddressVersion : IPv4 IdleTimeoutInMinutes : 4 Zones : {} ProvisioningState : Succeeded PublicIpPrefix : IpConfigurationText : { "Id": "/subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/20240120/providers/Microsoft.Network/virtualNetworkGateways/hogevpngw/ipConfigurations/hogegwipconfig" } DdosSettingsText : {} DnsSettingsText : null IpTagsText : [] SkuText : { "Name": "Basic", "Tier": "Regional" } PublicIpPrefixText : null ExtendedLocationText : null ResourceGroupName : 20240120 Location : japaneast ResourceGuid : 550afb4e-660c-4a69-9e1f-07cb73384ec8 Type : Microsoft.Network/publicIPAddresses Tag : TagsTable : Name : hogepublicip Etag : W/"20826178-ffe7-43cd-b6c6-fb842abd7272" Id : /subscriptions/11111111-2222-3333-4444-555555555555/resourceGroups/20240120/providers/Microsoft.Network/publicIPAddresses/hogepublicip
完了まで数十分かかりますが、完了後に Azure ポータルからリソースを確認してみると、Azure VPN Gateway の SKU が Basic で作成されていました。やった。
あとは冒頭の手順に沿って AWS、Azure それぞれの後続の設定を行い無事 Basic SKU でのサイト間 VPN を構成することが出来ました。
なお、Basic SKU の場合は IKE バージョンを少し気をつける必要があります。
次のドキュメントに記載されているのですが、今回スクリプトで設定しているルートベースのゲートウェイの Basic SKU だと IKEv2 のみサポートされています。ローカル接続作成時に IKEv1 を使おうとするとエラーで構築に失敗します。
IKEv1 を使いたい場合はポリシーベースを選択する必要があるようです。
さいごに
本日は Azure VPN Gateway の Basic SKU がポータルから作成出来なかったので PowerShell で作成してみました。
毎回ポータルから私は作成していたので、AWS も含めて全部テンプレートやスクリプトにしても良い気がしてきました。
公式ドキュメントの記述からすると将来的にはポータルから作成出来るようになるそうなのですが、検証用途だと Basic SKU 使いたいこともあると思うので、ポータルに実装されるまでは今回のような形で構築しようと思います。